package com.shu.mmall.util;

import com.shu.mmall.common.Const;
import lombok.extern.java.Log;
import lombok.extern.slf4j.Slf4j;

import java.security.MessageDigest;

/**
 * @author shujinhao
 */
@Slf4j
public class Md5Util {
    private static String byteArrayToHexString(byte[] b){
        StringBuilder resultSb = new StringBuilder();
        for (byte aB : b) {
            resultSb.append(byteToHexString(aB));
        }
        return resultSb.toString();
    }

    private static String byteToHexString(byte b) {
        int n=b;
        if (n<0) {
            n += 256;
        }
        int d1=n/16;
        int d2=n%16;
        return HEX_DIGITS[d1] + HEX_DIGITS[d2];
    }
    private static String md5Encode(String origin){
        String resultString;
        try {
            resultString= origin;
            MessageDigest md =MessageDigest.getInstance("MD5");
            if (EmptyUtil.isEmpty(Const.CHAR_SET_UTF_8)){
                resultString=byteArrayToHexString(md.digest(resultString.getBytes()));
            }else {
                resultString=byteArrayToHexString(md.digest(resultString.getBytes(Const.CHAR_SET_UTF_8)));
            }
            return resultString.toUpperCase();
        } catch (Exception e) {
            log.error("发生异常"+e);
        }
        return null;
    }
    public static String md5EncodeUtf8(String origin){
        return md5Encode(origin);
    }
    private static final String[] HEX_DIGITS ={"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};
}
